package org.example.design.observer.test1;

import java.util.ArrayList;

/**
 * @author huangshen
 * @version 0
 * @description 生成数值的对象的抽象类
 * @since 2022/2/11 13:58
 */
public abstract class BaseNumberGenerator {

    private final ArrayList<Observer> observers = new ArrayList<>();

    /**
     * 注册observer
     * @param observer 观察者
     */
    public void addObserver(Observer observer) {
        observers.add(observer);
    }

    /**
     * 删除observer
     * @param observer 观察者
     */
    public void deleteObserver(Observer observer) {
        observers.remove(observer);
    }

    /**
     * 向Observer发送通知
     */
    public void notifyObserver() {
        for (Observer observer : observers) {
            observer.update(this);
        }
    }

    /**
     * 获取数值
     * @return int
     */
    public abstract int getNumber();

    /**
     * 生成数值
     */
    public abstract void execute();

}
